--- /dev/null
+From: Simon McVittie <smcv@collabora.com>
+Date: Sun, 18 Apr 2021 12:16:45 +0100
+Subject: libtest: On failure, make it clearer what has happened
+
+If we fail as a result of `set -x`, It's often not completely obvious
+which command failed or how. Use a trap on ERR to show the command that
+failed, and its exit status.
+
+Signed-off-by: Simon McVittie <smcv@collabora.com>
+Forwarded: https://github.com/ostreedev/ostree/pull/2350
+---
+ tests/libtest.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/tests/libtest.sh b/tests/libtest.sh
+index eda3b92..2e9a99d 100755
+--- a/tests/libtest.sh
++++ b/tests/libtest.sh
+@@ -46,6 +46,14 @@ run_exit_cmds() {
+ }
+ trap run_exit_cmds EXIT
+
++report_err () {
++ local exit_status="$?"
++ { { local BASH_XTRACEFD=3; } 2> /dev/null
++ echo "Unexpected nonzero exit status $exit_status while running: $BASH_COMMAND" >&2
++ } 3> /dev/null
++}
++trap report_err ERR
++
+ save_core() {
+ if [ -e core ]; then
+ cp core "$test_srcdir/core"